package com.huayue.util;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 订单号工具
 */
public class OrderNumberHelper {
    /**
     * 进货单
     */
    public static List<String> JHDORDER = new ArrayList<String>();
    /**
     * 销售单
     */
    public static List<String> XSDORDER = new ArrayList<String>();
    /**
     * 房务单
     */
    public static List<String> FWORDER = new ArrayList<String>();
    /**
     * 入库单
     */
    public static List<String> RKDORDER = new ArrayList<String>();
    /**
     * 房间预定单
     */
    public static List<String> YDDORDER = new ArrayList<String>();
    /**
     * 出库单
     */
    public static List<String> CKDORDER = new ArrayList<String>();
    /**
     * RoomRealOrder 入住单
     */
    public static List<String> RZDORDER = new ArrayList<String>();
    // /**
    // * 支付宝支付单
    // */
    // public static List<String> ZFBORDER = new ArrayList<String>();

    /**
     * 获取一个订单号
     *
     * @param orderType
     *            订单类型
     * @param head
     *            订单号头
     * @return
     */
    public static String getOrderNumber(List<String> orderType, String head) {
        StringBuffer orderNumber = new StringBuffer(head.toUpperCase());
        orderNumber.append(DateHelper.DateToStringShort(new Date()).replace("-", ""));
        // 数据库中的总数加临时数据库的总数+1为当前订单号
        orderNumber.append(String.format("%04d", Math.round((Math.random() + 1) * 1000)));
        // 判断当前生成的订单号在临时库中是否存在
        for (String str : orderType) {
            if (str.equals(orderNumber.toString())) {
                getOrderNumber(orderType, head);
            }
        }
        orderType.add(orderNumber.toString());
        return orderNumber.toString();
    }

    /**
     * 移除临时数据库中的订单号
     *
     * @param orderType
     *            订单类型
     * @param orderNumber
     *            订单号
     */
    public static void removeOrderNumber(List<String> orderType, String orderNumber) {
        // 倒序遍历元素，无论删除元素之后的元素怎么移动，之前的元素对应的索引(index)不会发生变化
        for (int i = orderType.size() - 1; i >= 0; i--) {
            String item = orderType.get(i);
            try {
                if (orderNumber.equals(item)) {
                    orderType.remove(item);
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }
}
